home *** CD-ROM | disk | FTP | other *** search
/ IRIX Base Documentation 2002 November / SGI IRIX Base Documentation 2002 November.iso / usr / share / catman / p_man / cat5 / lno.z / lno
Encoding:
Text File  |  2002-10-03  |  33.3 KB  |  646 lines

  1. LNO(5)                                                 Last changed: 4-9-99
  2.  
  3.  
  4. NNAAMMEE
  5.      LLNNOO - Compiler loop nest optimization option group
  6.  
  7. SSYYNNOOPPSSIISS
  8.      --LLNNOO:: ...
  9.  
  10. IIMMPPLLEEMMEENNTTAATTIIOONN
  11.      IRIX systems
  12.  
  13. DDEESSCCRRIIPPTTIIOONN
  14.      This man page describes the loop nest optimization options accepted by
  15.      the ff9900(1), ff7777(1), CCCC(1), cccc(1), and cc8899(1) commands.
  16.  
  17.      The --LLNNOO:: option group specifies options and transformations performed
  18.      on loop nests.  The --LLNNOO:: option group is enabled only if the --OO33
  19.      option is also specified on the compiler command line.
  20.  
  21.      For information on the LNO options that are in effect during a
  22.      compilation, use the --LLIISSTT::ooppttiioonnss==OONN option.
  23.  
  24.      You can specify more than one suboption to the --LLNNOO:: option either by
  25.      using colons to separate each suboption or by specifying multiple
  26.      options on the command line.  For example, the following command lines
  27.      are equivalent:
  28.  
  29.           f90 -LNO:auto_dist=ON:outer=OFF b.f
  30.           f90 -LNO:auto_dist=ON -LNO:outer=OFF b.f
  31.  
  32.      Some --LLNNOO:: suboptions are specified with a setting that either enables
  33.      or disables the feature.  To enable a feature, specify the argument
  34.      either alone or with ==11, ==OONN, or ==TTRRUUEE.  To disable a feature, specify
  35.      the suboption with either ==00, ==OOFFFF, or ==FFAALLSSEE.  For example, the
  36.      following command lines are equivalent:
  37.  
  38.           f90 -LNO:auto_dist:blocking=OFF:oinvar=FALSE a.f
  39.           f90 -LNO:auto_dist=1:blocking=0:oinvar=OFF a.f
  40.  
  41.      For brevity, this man page shows only the OONN or OOFFFF settings to
  42.      suboptions, but 00, 11, TTRRUUEE, and FFAALLSSEE are also allowed as settings. In
  43.      addition, this man page shows the abbreviated form for some of the
  44.      suboption names.  You can use either the abbreviation or the complete
  45.      suboption name when using the suboptions. The following is a list of
  46.      the abbreviations and the complete suboption names:
  47.  
  48.           Complete name                 Abbreviation
  49.  
  50.           oouutteerr__uunnrroollll                  oouu
  51.  
  52.           aassssoocciiaattiivviittyy                 aassssoocc
  53.  
  54.           cclleeaann__mmiissss__ppeennaallttyy            ccmmpp
  55.  
  56.           ddiirrttyy__mmiissss__ppeennaallttyy            ddmmpp
  57.  
  58.           ccaacchhee__ssiizzee                    ccss
  59.  
  60.           iiss__mmeemmoorryy__lleevveell               iiss__mmeemm
  61.  
  62.           lliinnee__ssiizzee                     llss
  63.  
  64.           ttllbb__eennttrriieess                   ttllbb
  65.  
  66.           ttllbb__cclleeaann__mmiissss__ppeennaallttyy        ttllbbccmmpp
  67.  
  68.           pprreeffeettcchh__lleevveell                ppff
  69.  
  70.      See "F77 LNO Directives" at the end of this man page for a summary of
  71.      the F77 directives for LNO.  See the _M_I_P_S_p_r_o _7 _F_o_r_t_r_a_n _9_0 _C_o_m_m_a_n_d_s _a_n_d
  72.      _D_i_r_e_c_t_i_v_e_s _R_e_f_e_r_e_n_c_e _M_a_n_u_a_l, for a discussion of the Fortran 90 LNO
  73.      directives.  See _M_I_P_S_p_r_o _C _a_n_d _C++ _P_r_a_g_m_a_s, for descriptions of the C
  74.      and C++ LNO #pragma directives.
  75.  
  76.      The descriptions to the suboptions to --LLNNOO:: are divided into the
  77.      following categories:
  78.  
  79.                * General options
  80.  
  81.                * Transformation options
  82.  
  83.                * Cache memory management options
  84.  
  85.                * TLB options
  86.  
  87.                * Prefetch options
  88.  
  89.      The --LLNNOO option accepts the following general suboptions:
  90.  
  91.      SSuubbooppttiioonn   AAccttiioonn
  92.  
  93.      aauuttoo__ddiisstt[[ == (( OONN||OOFFFF ))]]
  94.                  Distributes local arrays in common blocks that are
  95.                  accessed in parallel.  The default is OOFFFF.
  96.  
  97.                  This optimization works with either automatic parallelism
  98.                  or parallelism using directives; it is always safe, and
  99.                  does not affect the layout of arrays in virtual space, and
  100.                  does not incur addressing overhead.
  101.  
  102.      ffiissssiioonn==_n   Controls loop fission.  _n can be one of the following:
  103.  
  104.                  0   Disables loop fission.
  105.  
  106.                  1   Performs normal fission as necessary.  This is the
  107.                      default.
  108.  
  109.                  2   Specifies that fission be tried before fusion.
  110.  
  111.                  If --LLNNOO::ffiissssiioonn==_n and --LLNNOO::ffuussiioonn==_n are both set to 1 or
  112.                  to 2, fusion is performed.
  113.  
  114.      ffuussiioonn==_n    Controls loop fusion.  _n can be one of the following:
  115.  
  116.                  0   Disables loop fusion.
  117.  
  118.                  1   Performs standard outer loop fusion.  This is the
  119.                      default.
  120.  
  121.                  2   Specifies that outer loops should be fused, even if it
  122.                      means partial fusion.
  123.  
  124.                  The compiler attempts fusion before fission.  The compiler
  125.                  performs partial fusion if not all levels can be fused in
  126.                  the multiple-level fusion.
  127.  
  128.                  If --LLNNOO==ffiissssiioonn==_n and --LLNNOO::ffuussiioonn==_n are both set to 1 or
  129.                  to 2, fusion is performed.
  130.  
  131.      ffuussiioonn__ppeeeelliinngg__lliimmiitt==_n
  132.                  Sets the limit for the number of iterations allowed to be
  133.                  peeled in fusion, where _n >= 0.  By default, _n=5.
  134.  
  135.      ggaatthheerr__ssccaatttteerr==_n
  136.                  Performs gather-scatter optimizations.  _n can be one of
  137.                  the following:
  138.  
  139.                  0   Disables all gather-scatter optimization.
  140.  
  141.                  1   Performs gather-scatter optimizations on non-nested IIFF
  142.                      statements.  This is the default.
  143.  
  144.                  2   Performs multi-level gather-scatter optimizations.
  145.  
  146.      iiggnnoorree__pprraaggmmaass[[ == (( OONN||OOFFFF ))]]
  147.                  Specifies that the command line options override
  148.                  directives in the source file.  The default is OOFFFF.
  149.  
  150.      llooccaall__ppaadd__ssiizzee==_n
  151.                  Specifies the amount by which to pad local array
  152.                  dimensions.  By default, the compiler automatically
  153.                  chooses the amount of padding to improve cache behavior
  154.                  for local array accesses.
  155.  
  156.      nnoonn__bblloocckkiinngg__llooaaddss[[ == (( OONN||OOFFFF ))]]
  157.                  (C/C++ and F77 only) Specifies whether the processor
  158.                  blocks on loads.  If not set, the default of the current
  159.                  processor is used.
  160.  
  161.      ooiinnvvaarr[[ == (( OONN||OOFFFF ))]]
  162.                  Controls outer loop hoisting.  The default is OONN.
  163.  
  164.      oopptt==_n       Controls the LNO optimization level.  _n can be one of the
  165.                  following:
  166.  
  167.                  0   Disables nearly all loop nest optimization.
  168.  
  169.                  1   Peforms full loop nest transformations.  This is the
  170.                      default.
  171.  
  172.      oouutteerr[[ == (( OONN||OOFFFF ))]]
  173.                  Enables or disables outer loop fusion.  The default is OONN.
  174.  
  175.      ppaarraalllleell__oovveerrhheeaadd==_n_u_m__c_y_c_l_e_s
  176.                  Overrides internal compiler estimates concerning the
  177.                  efficiency to be gained by executing certain loops in
  178.                  parallel rather than serially.  _n_u_m__c_y_c_l_e_s specifies the
  179.                  number of processor cycles.  Specify an integer for
  180.                  _n_u_m__c_y_c_l_e_s.  The default is 2600.
  181.  
  182.      ppuurree==_n (MIPSpro C/C++)
  183.                  Tells the compiler how to use the ##pprraaggmmaa ppuurree and ##pprraaggmmaa
  184.                  nnoo ssiiddee eeffffeeccttss directives when performing parallel
  185.                  analysis.  ##pprraaggmmaa nnoo ssiiddee eeffffeeccttss may read its arguments
  186.                  and unspecified global data; ##pprraaggmmaa ppuurree can read only
  187.                  its arguments; neither directive can modify its arguments
  188.                  or global data.  Specify 00, 11, or 22 for _n, as follows:
  189.  
  190.                  _n VVaalluuee   DDeessccrriippttiioonn
  191.  
  192.                  00         The compiler ignores the ##pprraaggmmaa ppuurree and
  193.                            ##pprraaggmmaa nnoo ssiiddee eeffffeeccttss directives when
  194.                            gathering information for parallelization
  195.                            analysis.
  196.  
  197.                  11         The compiler interprets the ##pprraaggmmaa ppuurree and
  198.                            ##pprraaggmmaa nnoo ssiiddee eeffffeeccttss directives per their
  199.                            definitions when gathering information for
  200.                            parallelization analysis.
  201.  
  202.                  22         The compiler interprets ##pprraaggmmaa nnoo ssiiddee eeffffeeccttss
  203.                            as ##pprraaggmmaa ppuurree when gathering information for
  204.                            parallelization analysis.  This option is
  205.                            provided because you may declare a function to
  206.                            have no side effects, when in fact, it is pure,
  207.                            except for references to system variables such
  208.                            as errno.  In these cases, you can treat no side
  209.                            effects functions as if they were pure for the
  210.                            purposes of parallelization.
  211.  
  212.      ppuurree==_n (MIPSpro 7 Fortran 90)
  213.                  Specifies the extent to which the compiler should consider
  214.                  the effect of a PPUURREE procedure or a !!DDIIRR$$ NNOOSSIIDDEEEEFFFFEECCTTSS
  215.                  directive when performing parallel analysis.  Specify 00,
  216.                  11, or 22 for _n, as follows:
  217.  
  218.                  _n VVaalluuee   DDeessccrriippttiioonn
  219.  
  220.                  00         Directs the compiler to ignore a PPUURREE attribute
  221.                            and the !!DDIIRR$$ NNOOSSIIDDEEEEFFFFEECCTTSS directive.
  222.  
  223.                  11         Directs the compiler to consider the fact that
  224.                            PPUURREE procedures and procedures preceded by a
  225.                            !!DDIIRR$$ NNOOSSIIDDEEEEFFFFEECCTTSS directive do not modify
  226.                            global data or procedure arguments when
  227.                            performing parallel analysis.  Default.
  228.  
  229.                  22         Asserts to the compiler that that PPUURREE
  230.                            procedures and procedures preceded by a
  231.                            !!DDIIRR$$ NNOOSSIIDDEEEEFFFFEECCTTSS directive do not modify
  232.                            global data, do not modify procedure dummy
  233.                            arguments, and do not access global data.
  234.  
  235.                            This setting asserts that the only non-local
  236.                            data items referenced by the procedure are the
  237.                            dummy arguments to the procedure.  This is an
  238.                            extension of the Fortran standard meaning of
  239.                            PPUURREE and of the meaning of !!DDIIRR$$ NNOOSSIIDDEEEEFFFFEECCTTSS.
  240.                            At this setting, more aggressive parallelization
  241.                            can occur if procedures are known not to access
  242.                            global data.
  243.  
  244.      vviinnttrr[[ == (( OONN||OOFFFF ))]]
  245.                  Specifies that vectorizable versions of the math intrinsic
  246.                  functions should be used.  The default is OONN.
  247.  
  248.                  For information on the math intrinsic functions, see
  249.                  mmaatthh(3M).
  250.  
  251.      The loop transformation arguments allow you to control cache blocking,
  252.      loop unrolling, and loop interchange.  They are as follows:
  253.  
  254.      bblloocckkiinngg[[ == (( OONN||OOFFFF ))]]
  255.                Specify bblloocckkiinngg==OOFFFF to disable the cache blocking
  256.                transformation.  The default is OONN.
  257.  
  258.      bblloocckkiinngg__ssiizzee==[_n_1][,,_n_2]
  259.                Specifies a block size that the compiler must use when
  260.                performing any blocking.  When using the MIPSpro 7 Fortran
  261.                90 compiler, specify a value for _n_2 when using a 2-level
  262.                cache.  For _n_1 or _n_2, specify a positive integer number that
  263.                represents the number of iterations.
  264.  
  265.      iinntteerrcchhaannggee[[ == (( OONN||OOFFFF ))]]
  266.                Specifies whether or not loop interchange optimizations are
  267.                performed.  The default is OONN.
  268.  
  269.      oouu==_n      Indicates that all outer loops for which unrolling is legal
  270.                should be unrolled by _n, where _n is a positive integer.  The
  271.                compiler unrolls loops by this amount or not at all.
  272.  
  273.      oouu__ddeeeepp[[ == (( OONN||OOFFFF ))]]
  274.                Specifies that for loops with 3-deep, or deeper, loop nests,
  275.                the compiler should outer unroll the wind-down loops that
  276.                result from outer unrolling loops further out.  This results
  277.                in large code size, but it generates much faster code
  278.                whenever wind-down loop execution costs are important.  The
  279.                default is OONN.
  280.  
  281.      oouu__ffuurrtthheerr==_n
  282.                Specifies whether or not the compiler performs outer loop
  283.                unrolling on wind-down loops.  Specify an integer for _n.
  284.  
  285.      oouu__mmaaxx==_n  Indicates that the compiler can unroll as many as _n copies
  286.                per loop, but no more.
  287.  
  288.      oouu__pprroodd__mmaaxx==_n
  289.                Indicates that the product of unrolling of the various outer
  290.                loops in a given loop nest is not to exceed _n, where _n is a
  291.                positive integer.  The default is 16.
  292.  
  293.      ppwwrr22[[ == (( OONN||OOFFFF ))]]
  294.                (C/C++ and F77 only) Specifies whether to ignore the leading
  295.                dimension (set to OOFFFF to ignore).
  296.  
  297.                You can disable additional unrolling by specifying
  298.                --LLNNOO::oouu__ffuurrtthheerr==999999999999.  Unrolling is enabled as much as is
  299.                sensible by specifying --LLNNOO::oouu__ffuurrtthheerr==33.
  300.  
  301.      Certain arguments allow you to describe the target cache memory
  302.      system.  The numbering in the following arguments starts with the
  303.      cache level closest to the processor and works outward:
  304.  
  305.      aassssoocc11==_n, aassssoocc22==_n, aassssoocc33==_n, aassssoocc44==_n
  306.                Specifies the cache set associativity.  For a fully
  307.                associative cache, such as main memory, set _n to any
  308.                sufficiently large number, such as 128.  Specify a positive
  309.                integer for _n.  Specifying _n=00 indicates that there is no
  310.                cache at that level.
  311.  
  312.      ccmmpp11==_n, ccmmpp22==_n, ccmmpp33==_n, ccmmpp44==_n
  313.      ddmmpp11==_n, ddmmpp22==_n, ddmmpp33==_n, ddmmpp44==_n
  314.                Specifies, in processor cycles, the time for a clean miss
  315.                (ccmmpp_x==) or dirty miss (ddmmpp_x==) to the next outer level of the
  316.                memory hierarchy.  This number is approximate because it
  317.                depends upon a clean or dirty line, read or write miss, etc.
  318.                Specify a positive integer for _n.  Specifying _n=00 indicates
  319.                that there is no cache at that level.
  320.  
  321.      ccss11==_n, ccss22==_n, ccss33==_n, ccss44==_n
  322.                Specifies the cache size.  The value _n can be 0, or it can
  323.                be a positive integer followed by one of the following
  324.                letters:  kk, KK, mm, or MM.  This specifies the cache size in
  325.                Kbytes or Mbytes.  Specifying 0 indicates that there is no
  326.                cache at that level.
  327.  
  328.                ccss11 refers to the primary cache.  ccss22 refers to the
  329.                secondary cache.  ccss33 refers to memory.  ccss44 refers to disk.
  330.                The default cache size for each type of cache depends on
  331.                your system.  You can use the --LLIISSTT::ooppttiioonnss==OONN option to see
  332.                the default cache sizes used during your compilation.  In
  333.                addition you can enter the following command to see the
  334.                secondary cache size(s) on your system:
  335.  
  336.                     hinv -c memory | grep Secondary
  337.  
  338.      iiss__mmeemm11[[ == (( OONN||OOFFFF ))]]
  339.      iiss__mmeemm22[[ == (( OONN||OOFFFF ))]]
  340.      iiss__mmeemm33[[ == (( OONN||OOFFFF ))]]
  341.      iiss__mmeemm44[[ == (( OONN||OOFFFF ))]]
  342.                Specifies that certain memory hierarchies should be modeled
  343.                as memory, not cache.  The default is OOFFFF for each option.
  344.  
  345.                Blocking can be attempted for this memory hierarchy level,
  346.                and blocking appropriate for memory, rather than cache, is
  347.                applied.  No prefetching is performed, and any prefetching
  348.                options are ignored.  If an --OOPPTT::iiss__mmeemm_x[[ == (( OONN||OOFFFF ))]]
  349.                option is specified, the corresponding aassssoocc_x==_n
  350.                specification is ignored, any ccmmpp_x==_n and ddmmpp_x==_n options on
  351.                the command line are ignored.
  352.  
  353.      llss11==_n, llss22==_n, llss33==_n, llss44==_n
  354.                Specifies the line size, in bytes.  This is the number of
  355.                bytes, specified in the form of a positive integer number,
  356.                _n, that are moved from the memory hierarchy level further
  357.                out to this level on a miss.  Specifying _n=0 indicates that
  358.                there is no cache at that level.
  359.  
  360.      Certain arguments control the TLB.  The TLB is a cache for the page
  361.      table, and it is assumed to be fully associative.  The TLB control
  362.      arguments are as follows:
  363.  
  364.      ppss11==_n, ppss22==_n, ppss33==_n, ppss44==_n
  365.                Specifies the number of bytes in a page.  Specify a positive
  366.                integer for _n.  The default _n depends on your system
  367.                hardware.
  368.  
  369.      ttllbb11==_n, ttllbb22==_n, ttllbb33==_n, ttllbb44==_n
  370.                Specifies the number of entries in the TLB for this cache
  371.                level.  Specify a positive integer for _n.  The default _n
  372.                depends on your system hardware.
  373.  
  374.      ttllbbccmmpp11==_n, ttllbbccmmpp22==_n, ttllbbccmmpp33==_n, ttllbbccmmpp44==_n
  375.      ttllbbddmmpp11==_n, ttllbbddmmpp22==_n, ttllbbddmmpp33==_n, ttllbbddmmpp44==_n
  376.                Specifies the number of processor cycles it takes to service
  377.                a clean TLB miss (the ttllbbccmmpp_x== options) or dirty TLB miss
  378.                (the ttllbbddmmpp_n== options).  Specify a positive integer for _n.
  379.                The default _n depends on your system hardware.
  380.  
  381.      The following arguments control the prefetch operation:
  382.  
  383.      ppff11[[ == (( OONN||OOFFFF ))]]
  384.      ppff22[[ == (( OONN||OOFFFF ))]]
  385.      ppff33[[ == (( OONN||OOFFFF ))]]
  386.      ppff44[[ == (( OONN||OOFFFF ))]]
  387.                Selectively disables and enables prefetching for cache level
  388.                _x, for ppff_x[[ == (( OONN||OOFFFF ))]]
  389.  
  390.                When --rr1100000000 or --rr1122000000 are in effect, ppff11==OONN and ppff22==OONN by
  391.                default.  At any other --rr_n setting, OOFFFF is in effect for all
  392.                cache levels.
  393.  
  394.      pprreeffeettcchh==_n
  395.                Specifies levels of prefetching.  _n can be one of the
  396.                following:
  397.  
  398.                0   Disables all prefetching.  This is the default when
  399.                    --rr44000000, --rr55000000, or --rr88000000 is in effect.
  400.  
  401.                1   Enables conservative prefetching.  This is the default
  402.                    when --rr1100000000 or --rr1122000000 is in effect.
  403.  
  404.                2   Enables aggressive prefetching.
  405.  
  406.      pprreeffeettcchh__aahheeaadd==_n
  407.                Prefetches the specified number of cache lines ahead of the
  408.                reference.  Specify a positive integer for _n.  The default
  409.                is 2.
  410.  
  411.      pprreeffeettcchh__mmaannuuaall[[ == (( OONN||OOFFFF ))]]
  412.                Specifies whether manual prefetches (through directives)
  413.                should be respected or ignored.
  414.  
  415.                pprreeffeettcchh__mmaannuuaall==OOFFFF ignores manual prefetches.  This is the
  416.                default when --rr88000000, --rr55000000, or --rr44000000 is in effect.
  417.  
  418.                pprreeffeettcchh__mmaannuuaall==OONN respects manual prefetches.  This is the
  419.                default when --rr1100000000 or --rr1122000000 is in effect.
  420.  
  421. FF7777 LLNNOO DDiirreeccttiivveess
  422.      Directives within a program unit apply only to that program unit,
  423.      reverting to the default values at the end of the program unit.
  424.      Directives that occur outside of a program unit alter the default
  425.      value, and therefore apply to the rest of the file from that point on,
  426.      until overridden by a subsequent directive.
  427.  
  428.      Directives within a file override the command line options by default.
  429.      To have the command line options override directives, use the command
  430.      line option:
  431.  
  432.           -LNO:ignore_pragmas
  433.  
  434.    FFiissssiioonn aanndd FFuussiioonn DDiirreeccttiivveess
  435.      * CC**$$** AAGGGGRREESSSSIIVVEE IINNNNEERR LLOOOOPP FFIISSSSIIOONN: Fission this loop in
  436.        inner_fission phase to as many loops as possible.  This must be
  437.        followed by a inner loop and has no effect if that loop is not inner
  438.        any more after the SNL phase.
  439.  
  440.      * CC**$$** FFIISSSSIIOONN [[((_n))]] or CC**$$** FFIISSSSIIOONNAABBLLEE:  Fission the enclosing _n
  441.        level of loops after this directive. Perform legality test unless a
  442.        ffiissssiioonnaabbllee directive is also specified. Does not re-order
  443.        statements.
  444.  
  445.      * CC**$$** FFUUSSEE [[((_n [[,,_l_e_v_e_l]] ))]] or CC**$$** FFUUSSAABBLLEE:  Fuse the following _n
  446.        immediately adjacent loops. Fusion is attempted on each pair of
  447.        adjacent loops and the _l_e_v_e_l, by default, is the determined by the
  448.        maximal SNL levels of the fused loops, although partial fusion is
  449.        allowed.  Iterations may be peeled as needed during fusion; the
  450.        peeling limit is 5 or the number specified by the
  451.        --LLNNOO::ffuussiioonn__ppeeeelliinngg__lliimmiitt flag.  When the FFUUSSAABBLLEE directive is
  452.        present, no legality test is done and the fusion is done up to the
  453.        maximal SNL levels where the iteration numbers matched for each pair
  454.        of loops to be matched.  The default value for _n is  2.
  455.  
  456.      * CC**$$** NNOO FFIISSSSIIOONN:  The loop following this directive should not be
  457.        fissioned in either fiz_fuse phase or inner_fission phase. Its inner
  458.        loops, however, are allowed to be fissioned.
  459.  
  460.      * CC**$$** NNOO FFUUSSIIOONN:  The loop following this directive should not be
  461.        fused with other loops.
  462.  
  463.    SSNNLL TTrraannssffoorrmmaattiioonn DDiirreeccttiivveess
  464.      The parallelizing preprocessor may do some transformation for
  465.      parallelism that violate some of these directives.
  466.  
  467.      * CC**$$** IINNTTEERRCCHHAANNGGEE ((_I,, _J [[,,_K ......]] )):  Loops _I, _J and _K (in any order)
  468.        must directly follow this directive and be perfectly nested inside
  469.        each other. If they are not perfectly nested, the compiler may
  470.        perform loop distribution to make them so, or may ignore the
  471.        annotation, or may apply imperfect interchange (this is not likely).
  472.        The compiler attempts to reorder loops so that _I is outermost, then
  473.        _J, then _K.  The compiler may ignore this directive.  There must be a
  474.        minimum of 2 indexes in the directive.
  475.  
  476.      * CC**$$** NNOO IINNTTEERRCCHHAANNGGEE:  Prevents the compiler from involving the loop
  477.        directly following this directive in a permutation, or any loop
  478.        nested within this loop.
  479.  
  480.      * CC**$$** BBLLOOCCKKIINNGG SSIIZZEE ((_n_1,,_n_2)) or CC**$$** BBLLOOCCKKIINNGG SSIIZZEE ((_n_1)) or CC**$$**
  481.        BBLLOOCCKKIINNGG SSIIZZEE ((,,_n_2)): If the specified loop is involved in a blocking
  482.        for the primary or secondary cache, it will have a blocksize of _n_1
  483.        or _n_2. The compiler will try to include this loop within such a
  484.        block.  If a blocking size is specified as 0, the loop is not
  485.        actually stripped, but the entire loop is inside the block.
  486.  
  487.      * CC**$$** NNOO BBLLOOCCKKIINNGG: Prevent the compiler from involving this loop in a
  488.        cache blocking.
  489.  
  490.      * CC**$$** UUNNRROOLLLL ((_n [[,,_n_2]] )): This directive suggests that _n-_1 copies of
  491.        the loop body be added to the inner loop. If the loop that this
  492.        directive directly preceeds is an inner loop, then it indicates
  493.        standard unrolling. If the loop that this directive directly
  494.        preceeds is not innermost, then outer loop unrolling is performed.
  495.        _n must be at least 1.  If _n=1 then no unrolling will be performed.
  496.        If _n=0, then the default unrolling should be applied.  _n_2 is
  497.        ignored.
  498.  
  499.      * CC**$$** BBLLOOCCKKAABBLLEE ((_I,,_J [[,,_K ......]] )): The _I, _J and _K loops must be
  500.        adjacent and nested within each other, although not necessarily
  501.        perfectly nested.  This directive informs the compiler that these
  502.        loops may legally be involved in a blocking with each other, even if
  503.        the compiler would consider such a transformation illegal.  The
  504.        loops are also interchangeable and unrollable.  This directive does
  505.        not instruct the compiler which of these transformations to apply.
  506.        You must specify at least 2 loop indexes in the directive.
  507.  
  508.    PPrreeffeettcchh DDiirreeccttiivveess
  509.      * CC**$$** PPRREEFFEETTCCHH ((_n[[,,_n]])): Specify prefetching for each level of the
  510.        cache. The scope is the entire function containing the directive.  _n
  511.        can be one of the following values:
  512.  
  513.        00    prefetching off (default for all processors except R10000)
  514.  
  515.        11    prefetching on, but conservative
  516.  
  517.        22    prefetching on, and aggressive (default when prefetch is on)
  518.  
  519.      * CC**$$** PPRREEFFEETTCCHH__MMAANNUUAALL ((_n)):  Specify if manual prefetches (through
  520.        directives) should be respected or ignored.  Scope: Entire function
  521.        containing the directive.  _n can be one of the following values:
  522.  
  523.        00    ignore manual prefetches (default for mmiippss33 and earlier)
  524.  
  525.        11    respect manual prefetches (default for mmiippss44)
  526.  
  527.      * CC**$$** PPRREEFFEETTCCHH__RREEFF__DDIISSAABBLLEE==_A [[,, ssiizzee==_n_u_m]]:  This directive explicitly
  528.        disables prefetching all references to array _A in the current
  529.        function. The auto-prefetcher runs (if enabled) ignoring array _A.
  530.        The ssiizzee is used for volume analysis.  Scope: Entire function
  531.        containing the directive.  ssiizzee==_n_u_m is the size of the array
  532.        references in this loop, in Kbytes.  This is an optional argument
  533.        and must be a constant.
  534.  
  535.      * CC**$$** PPRREEFFEETTCCHH__RREEFF==_a_r_r_a_y-_r_e_f,,[[ssttrriiddee==[[_s_t_r]] [[,,_s_t_r]]]],, [[lleevveell==[[_l_e_v]]
  536.        [[,,_l_e_v]]]],, [[kkiinndd==[[_r_d/_w_r]]]],, [[ssiizzee==[[_s_z]]]]: This directive generates a
  537.        single prefetch instruction to the specified memory location. It
  538.        searches for array references that match the supplied reference in
  539.        the current loop-nest.  If such a reference is found, that reference
  540.        is connected to this prefetch node with the specified latency. If no
  541.        such reference is found, this prefetch node stays free-floating and
  542.        is scheduled "loosely".
  543.  
  544.        All references to this array in this loop-nest are ignored by the
  545.        automatic prefetcher (if enabled).
  546.  
  547.        If the size is supplied, then the auto-prefetcher (if enabled)
  548.        reduces the effective cache size by that amount in its calculations.
  549.  
  550.        The compiler tries to issue one prefetch per stride iteration, but
  551.        cannot guarantee it. Redundant prefetches are preferred to
  552.        transformations (such as inserting conditionals) which incur other
  553.        overhead.
  554.  
  555.        Scope: No scope. Just generates a prefetch instruction.
  556.  
  557.        The following arguments are used with this option:
  558.  
  559.        _a_r_r_a_y-_r_e_f Required.  The reference itself, for example, AA((ii,, jj)).
  560.  
  561.        _s_t_r       Optional. Prefetch every _s_t_r iterations of this loop.  The
  562.                  default is 1.
  563.  
  564.        _l_e_v       Optional.  The level in memory hierarchy to prefetch. The
  565.                  default is 2.  If _l_e_v=1, prefetch from L2 to L1 cache. If
  566.                  _l_e_v=2, prefetch from memory to L1 cache.
  567.  
  568.        _r_d/_w_r     Optional.  The default is read/write.
  569.  
  570.        _s_z        Optional.  The size (in Kbytes) of the array referenced in
  571.                  this loop. This must be a constant.
  572.  
  573.    DDeeppeennddeennccee AAnnaallyyssiiss DDiirreeccttiivveess
  574.      * CCDDIIRR$$ IIVVDDEEPP: This applies only to inner loops. Liberalize dependence
  575.        analysis.  Given two memory references, where at least one is loop
  576.        variant, ignore any loop-carried dependences between the two
  577.        references. The following are examples of this directive.
  578.  
  579.           do i = 1,n
  580.             b(k) = b(k) + a(i)
  581.           enddo
  582.  
  583.      IIVVDDEEPP does not break the dependence because bb((kk)) is not loop-variant.
  584.  
  585.           do i=1,n
  586.              a(i) = a(i-1) + 3
  587.           enddo
  588.  
  589.      IIVVDDEEPP does break the dependence but the compiler warns the user that
  590.      it is breaking an obvious dependence.
  591.  
  592.           do i=1,n
  593.              a(b(i)) = a(b(i)) + 3.
  594.           enddo
  595.  
  596.      IIVVDDEEPP does break the dependence.
  597.  
  598.           do i = 1,n
  599.              a(i) = b(i)
  600.              c(i) = a(i) + 3.
  601.           enddo
  602.  
  603.      IIVVDDEEPP does not break the dependence on aa[[ii]] because it is within an
  604.      iteration.
  605.  
  606.      If --OOPPTT::ccrraayy__iivvddeepp==OONN,, Cray semantics are used and all lexically
  607.      backwards dependences are broken. The following are examples:
  608.  
  609.           do i=1,n
  610.              a(i) = a(i-1) + 3.
  611.           enddo
  612.  
  613.      IIVVDDEEPP does break the dependence but the compiler warns the user that
  614.      it's breaking an obvious dependence.
  615.  
  616.           do i=1,n
  617.              a(i) = a(i+1) + 3.
  618.           enddo
  619.  
  620.      IIVVDDEEPP does not break the dependence because the dependence is from the
  621.      load to the store, and the load comes lexically before the store.
  622.  
  623.      If --OOPPTT::lliibbeerraall__iivvddeepp==OONN,, all dependences are broken.
  624.  
  625. SSEEEE AALLSSOO
  626.      cccc(1), CCCC(1), ccoorrdd(1), ddssoo(1), ff7777(1), ff9900(1), ffppmmooddee(1), hhiinnvv(1),
  627.      lldd(1), mmaakkee(1), ppiixxiiee(1), ppmmaakkee(1), pprrooff(1), rrlldd(1), ssmmaakkee(1).
  628.  
  629.      mmaatthh(3M).
  630.  
  631.      aauuttoo__pp(5), ggpp__oovveerrffllooww(5), iippaa(5), oopptt(5), ppee__eennvviirroonn(5).
  632.  
  633.      _M_I_P_S_p_r_o _C _a_n_d _C++ _P_r_a_g_m_a_s, publication 007-3587-001
  634.  
  635.      _C _L_a_n_g_u_a_g_e _R_e_f_e_r_e_n_c_e _M_a_n_u_a_l, publication 007-0701-120
  636.  
  637.      _C_o_m_p_i_l_e_r _I_n_f_o_r_m_a_t_i_o_n _F_i_l_e (_C_I_F) _R_e_f_e_r_e_n_c_e _M_a_n_u_a_l
  638.  
  639.      _M_I_P_S_p_r_o _F_o_r_t_r_a_n _7_7 _P_r_o_g_r_a_m_m_e_r'_s _G_u_i_d_e
  640.  
  641.      _M_I_P_S_p_r_o _7 _F_o_r_t_r_a_n _9_0 _C_o_m_m_a_n_d_s _a_n_d _D_i_r_e_c_t_i_v_e_s _R_e_f_e_r_e_n_c_e _M_a_n_u_a_l
  642.  
  643.      _M_I_P_S_p_r_o _6_4-_B_i_t _P_o_r_t_i_n_g _a_n_d _T_r_a_n_s_i_t_i_o_n _G_u_i_d_e
  644.  
  645.      This man page is available only online.
  646.